Software appliances are combinations of software components that are packaged together to provide convenient distribution, installation, use, and maintenance of included software. More particularly, a software appliance generally might include a partial or complete operating system, application server, web server, application(s), and/or database(s). Packaged together, such a software appliance can be included within a container, and ultimately distributed to users and installed on designated hardware platforms.
In practice, a developer or provider of a software appliance may not always wish to distribute the software appliance, to every user or hardware platform, in the same form that it was created. For example, a software appliance that may be suitably distributed in one context may not be suitable for distribution in another context. For example, it may be beneficial or necessary for technical or legal reasons to conform software appliance distribution and provisioning to desired standards or requirements. However, conforming software appliances may lead to additional or redundant efforts, wasted resources, and the possibility of malfunction of the software appliance.